The approaches described in this section could be pursued but are not necessarily approaches that have previously been conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
In a typical load balancing scenario, a service hosted by a group of servers is front-ended by a load balancer (LB) (also referred to herein as a LB device) which represents this service to clients as a virtual service. Clients needing the service can address their packets to the virtual service using a virtual Internet Protocol (IP) address and a virtual port. The LB will inspect incoming packets and, based on the policies/algorithms, will choose a particular server from the group of servers, modify the packet if needed, and forward the packet towards the server. On the way back from the server (optional), the LB will get the packet, modify the packet if needed, and forward the packet back towards the client.
The traditional approach for load balancing of network of servers has several drawbacks. For example, the network request load may stay lower than a maximum capacity of a LB device for a long time, which could lead to wasted resources. In another situation, a network request might exceed the maximum capacity a single LB device can handle. Generally speaking, the limitations of traditional load balancing of networks are due to there only being one or several static devices responsible for deciding how and where to send packets, which does not allow for dynamic changes in network configuration when one needs to scale down or scale up the resources.
Therefore more efficient methods and systems for scaling data networks may be needed.